X-Learnerについて調べた内容のまとめ
最初に
「X-Learner」は「Meta-Learner(Algorithm)」というアルゴリズムの中の1つです。
「X-Learner」を調べていく過程で「T-Learner」、「S-Learner」といったアルゴリズムについても調べたので、「これらのアルゴリズムをざっくり理解すること」を目的とした備忘録的なエントリーを書きます。
下記3点を参考にしました。
目次
1.Meta-Learner(Algorithm)とは
そもそも「Meta-Learner(Algorithm)」とはなんなのでしょうか?
下記の説明文が端的にその内容を表現できていると思うので引用します。
A meta-algorithm (or meta-learner) is a framework to estimate the Conditional Average Treatment Effect (CATE) using any machine learning estimators (called base learners)
この後読んでいけばわかるかと思いますが、「Meta-Learner」とは「機械学習のアルゴリズムを内部的に使ってCATEを求めるための、メタな計算フレームワーク」と言えます。
「Meta-Learner(Algorithm)」の中にも色々なアルゴリズムがあるようですが、本エントリーでは「T-Learner」、「S-Learner」、「X-Learner」のみを対象とします。
2.T-Learner
「T-Learner」の「T」はこちらの論文によると、「Two」の略称とのことです。
「Two」というだけあり、2つのモデルを使います。
T-learner, “T” being short for “two.”
参照:Meta-learners for Estimating Heterogeneous Treatment Effects using Machine Learning
また、「2つのモデルを使う」と書きましたが、このモデリングに利用するアルゴリズムは特に決まっているわけではなく、分析者がある程度自由に選択することができます。
(ここで使うモデルが「base learner」と呼ばれます)
which could be any supervised learning or regression estimator
「T-Learner」の計算は下記の「2Step」からなります。
1Step目
「介入、非介入群」でそれぞれ目的変数を推論するモデリングをする。
(モデリングする際は、「介入効果」を示す列は共変量に入れず、介入群のモデルでは介入群のデータのみ、非介入群のモデルでは非介入群のデータのみを使ってモデリングする)
(当然、異なるアルゴリズムを採用しても良い)
2Step目
それぞれのモデルで推論した結果の差分を利用する。
(それぞれのモデルに全データを投入して推論値を得て、その推論値の差分を取得する)
詳細についてはMeta-learners for Estimating Heterogeneous Treatment Effects using Machine Learningを読んでいただくのが一番良いのですが、アルゴリズムについて記述している部分を転載しておきます。
参照:Meta-learners for Estimating Heterogeneous Treatment Effects using Machine Learning
3.S-Learner
「T-Learner」とは異なり、「介入効果」を示す列も共変量として含めてモデリングします。
そして、「介入効果」を示す列の値を変化させた場合の推論結果の差分を利用してCATEを求めます。
「T-Learner」とは異なり、「S-Learner」は単一のモデルを利用します。
「S-Learner」の「S」はこのように「single」モデルを利用することからきているようです。
. We refer to this meta-algorithm as the S-learner, since it uses a “single” estimator.
参照:Meta-learners for Estimating Heterogeneous Treatment Effects using Machine Learning
「S-Learner」も「T-Learner」同様に「モデリングに利用するアルゴリズムはこれ」、と決まっているわけではないです。
なので、分析者が適宜「データの特徴をうまく表現するモデル」を実装する必要があります。
(当然、「T-Learner」、「X-Learner」でも同様です)
下記に、こちらの論文中でアルゴリズムについて記述している部分を転載しておきます。
参照:Meta-learners for Estimating Heterogeneous Treatment Effects using Machine Learning
4.X-Learner
「X-Learner」は「T-learner」、「S-Learner」よりも少し複雑になります。
具体的な計算内容は下記の通りです。
Step1.介入グループごとにモデリング
「T-Learner」と同じく、介入グループごとにモデリングします。
µ0 = M1(Y0 ∼ X0) µ1 = M2(Y1 ∼ X1)
Step2.介入グループごとに処置効果を求める
「1.介入グループごとにモデリング」で計算したモデルを使って、下記の通り計算します。
あえて日本語で表現するなら、下記のようなイメージですね。
介入グループに対する条件付き処置効果(D1) = 介入グループの目的変数(Y1) - µ0のモデルで介入グループを推論した結果(µ0(x1)) 非介入グループに対する条件付き処置効果(D0) = µ1のモデルで非介入グループを推論した結果(µ1(x0)) - 非介入グループの目的変数(Y0)
そして、このD0,D1を目的変数とするモデリングをします。
モデル(M3) = 介入群のみを対象として、D1を推論するモデル モデル(M4) = 非介入群のみを対象として、D0を推論するモデル
Step3.傾向スコア等で重み付けをする
「Step2.介入グループごとに処置効果を求める」で求めた値に、傾向スコア等を用いて重み付けをする。
下記のg(x)が重み付けの関数です。
(g(x)は0~1の範囲内の値をとる)
τ(x) = g(x)M4(x) + (1 − g(x))M3(x)
下記に、こちらの論文中でアルゴリズムについて記述している部分を転載しておきます。
参照:Meta-learners for Estimating Heterogeneous Treatment Effects using Machine Learning
5.まとめ
「T-Learner」、「S-Learner」、「X-Learner」について、ざっくりまとめました。
日本語のドキュメントも少なく理解を深めるのが大変ですが、下記のサンプルを試したり、実装を眺めたりして理解を深めていこうと思います。
ここまで読んでいただき、ありがとうございました。